home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / IBPalettes / WW3DKit / RIBSkew.m < prev    next >
Encoding:
Text File  |  1995-03-22  |  2.5 KB  |  127 lines

  1. // copyright 1993 Michael B. Johnson; some portions copyright 1994, MIT
  2. // see COPYRIGHT for reuse legalities
  3. //
  4.  
  5. #import "RIBSkew.h"
  6.  
  7. @implementation RIBSkew
  8.  
  9. + initialize { return [RIBSkew setVersion:1], self; }
  10.  
  11. - init
  12. {
  13.   [super init];
  14.   angle = 90.0;
  15.   dx1 = 1.0;
  16.   dy1 = 0.0;
  17.   dz1 = 0.0;
  18.   dx2 = 1.0;
  19.   dy2 = 0.0;
  20.   dz2 = 0.0;
  21.  
  22.   return self;
  23. }
  24.  
  25. - awake
  26. {
  27.   [super awake];
  28.   N3D_CopyMatrix(N3DIdentityMatrix, myMatrix);
  29.   NXLogError("should be updating the skew matrix - but I'm not...\n");
  30.  
  31.   return self;
  32. }
  33.  
  34. - setAngle:(RtFloat)newAngle dx1:(RtFloat)newDX1 dy1:(RtFloat)newDY1 dz1:(RtFloat)newDZ1 dx2:(RtFloat)newDX2 dy2:(RtFloat)newDY2 dz2:(RtFloat)newDZ2
  35. {
  36.   angle = newAngle;
  37.   dx1 = newDX1;
  38.   dy1 = newDY1;
  39.   dz1 = newDZ1;
  40.   dx2 = newDX2;
  41.   dy2 = newDY2;
  42.   dz2 = newDZ2;
  43.  
  44.   N3D_CopyMatrix(N3DIdentityMatrix, myMatrix);
  45.  
  46.   return self;
  47. }
  48.  
  49. - getAngle:(RtFloat *)anglePtr 
  50.      dx1:(RtFloat *)dx1Ptr dy1:(RtFloat *)dy1Ptr dz1:(RtFloat *)dz1Ptr 
  51.      dx2:(RtFloat *)dx2Ptr dy2:(RtFloat *)dy2Ptr dz2:(RtFloat *)dz2Ptr;
  52. {
  53.   *anglePtr = angle;
  54.   *dx1Ptr = dx1;
  55.   *dy1Ptr = dy1;
  56.   *dz1Ptr = dz1;
  57.   *dx2Ptr = dx2;
  58.   *dy2Ptr = dy2;
  59.   *dz2Ptr = dz2;
  60.  
  61.   return self;
  62. }
  63.  
  64. - renderSelf:(WW3DCamera *)camera  startingAt:(RtFloat)shutterOpenTime endingAt:(RtFloat)shutterCloseTime
  65. {
  66.   RiSkew(angle, dx1, dy1, dz1, dx2, dy2, dz2);
  67.  
  68.   return self;
  69. }
  70.  
  71. - transformCTM:(WW3DAttributeState *)attributeState startingAt:(RtFloat)shutterOpenTime endingAt:(RtFloat)shutterCloseTime
  72.   RtMatrix  aMatrix, tmpMatrix;
  73.  
  74.  
  75.   NXLogError("should be skewing the CTM - but I'm not...\n");
  76.   [attributeState getTransformMatrix:aMatrix];
  77.   N3DMultiplyMatrix(myMatrix, aMatrix, tmpMatrix);
  78.   [attributeState setTransformMatrix:tmpMatrix];
  79.  
  80.   return self; 
  81. }
  82.  
  83. - (BOOL)isMotionBlurrable { return YES; }
  84.  
  85. - writeEve:(NXStream *)stream atTabLevel:(int)tab
  86. {
  87.    int  i;
  88.  
  89.  
  90.    for (i = 0; i < tab; i++)
  91.    {  NXPrintf(stream, "\t");
  92.    }
  93.    NXPrintf(stream, "Skew %f %f %f %f %f %f %f;", angle, dx1, dy1, dz1, dx2, dy2, dz2); 
  94.    return self;
  95. }
  96.  
  97. #define typeVector "ffff"
  98. #define typeValues &angle, &dx1, &dy1, &dz1, &dx2, &dy2, &dz2
  99.  
  100. - read:(NXTypedStream*)stream 
  101. {
  102.     int version;
  103.     [super read:stream];
  104.  
  105.     version = NXTypedStreamClassVersion(stream,"RIBSkew");
  106.     if (version == 0) NXReadTypes(stream,"i",&version), version=1;
  107.     if (version == 1)
  108.     {  NXReadTypes(stream,typeVector,typeValues);
  109.     } 
  110.     else 
  111.     {
  112.     }
  113.     return self;
  114. }
  115.  
  116. - write:(NXTypedStream*)stream 
  117. {
  118.     [super write:stream];
  119.  
  120.     NXWriteTypes(stream,typeVector, typeValues);
  121.  
  122.     return self;
  123. }
  124.  
  125. @end
  126.